# uncompyle6 version 3.2.3
# Python bytecode 3.6 (3379)
# Decompiled from: Python 3.6.8 |Anaconda custom (64-bit)| (default, Feb 21 2019, 18:30:04) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: site-packages\cryptography\hazmat\bindings\openssl\_conditional.py
from __future__ import absolute_import, division, print_function


def cryptography_has_cms():
    return [
        "BIO_new_CMS",
        "i2d_CMS_bio_stream",
        "PEM_write_bio_CMS_stream",
        "CMS_final",
        "CMS_sign",
        "CMS_verify",
        "CMS_encrypt",
        "CMS_decrypt",
        "CMS_add1_signer",
        "CMS_TEXT",
        "CMS_NOCERTS",
        "CMS_NO_CONTENT_VERIFY",
        "CMS_NO_ATTR_VERIFY",
        "CMS_NOSIGS",
        "CMS_NOINTERN",
        "CMS_NO_SIGNER_CERT_VERIFY",
        "CMS_NOVERIFY",
        "CMS_DETACHED",
        "CMS_BINARY",
        "CMS_NOATTR",
        "CMS_NOSMIMECAP",
        "CMS_NOOLDMIMETYPE",
        "CMS_CRLFEOL",
        "CMS_STREAM",
        "CMS_NOCRL",
        "CMS_PARTIAL",
        "CMS_REUSE_DIGEST",
        "CMS_USE_KEYID",
        "CMS_DEBUG_DECRYPT",
    ]


def cryptography_has_ec2m():
    return [
        "EC_GF2m_simple_method",
        "EC_POINT_set_affine_coordinates_GF2m",
        "EC_POINT_get_affine_coordinates_GF2m",
        "EC_POINT_set_compressed_coordinates_GF2m",
        "EC_GROUP_set_curve_GF2m",
        "EC_GROUP_get_curve_GF2m",
        "EC_GROUP_new_curve_GF2m",
    ]


def cryptography_has_ec_1_0_2():
    return ["EC_curve_nid2nist"]


def cryptography_has_set_ecdh_auto():
    return ["SSL_CTX_set_ecdh_auto"]


def cryptography_has_rsa_r_pkcs_decoding_error():
    return ["RSA_R_PKCS_DECODING_ERROR"]


def cryptography_has_rsa_oaep_md():
    return ["EVP_PKEY_CTX_set_rsa_oaep_md"]


def cryptography_has_rsa_oaep_label():
    return ["EVP_PKEY_CTX_set0_rsa_oaep_label"]


def cryptography_has_ssl3_method():
    return ["SSLv3_method", "SSLv3_client_method", "SSLv3_server_method"]


def cryptography_has_alpn():
    return [
        "SSL_CTX_set_alpn_protos",
        "SSL_set_alpn_protos",
        "SSL_CTX_set_alpn_select_cb",
        "SSL_get0_alpn_selected",
    ]


def cryptography_has_compression():
    return [
        "SSL_get_current_compression",
        "SSL_get_current_expansion",
        "SSL_COMP_get_name",
    ]


def cryptography_has_get_server_tmp_key():
    return ["SSL_get_server_tmp_key"]


def cryptography_has_102_verification_error_codes():
    return [
        "X509_V_ERR_SUITE_B_INVALID_VERSION",
        "X509_V_ERR_SUITE_B_INVALID_ALGORITHM",
        "X509_V_ERR_SUITE_B_INVALID_CURVE",
        "X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM",
        "X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED",
        "X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256",
        "X509_V_ERR_HOSTNAME_MISMATCH",
        "X509_V_ERR_EMAIL_MISMATCH",
        "X509_V_ERR_IP_ADDRESS_MISMATCH",
    ]


def cryptography_has_102_verification_params():
    return [
        "X509_V_FLAG_SUITEB_128_LOS_ONLY",
        "X509_V_FLAG_SUITEB_192_LOS",
        "X509_V_FLAG_SUITEB_128_LOS",
        "X509_VERIFY_PARAM_set1_host",
        "X509_VERIFY_PARAM_set1_email",
        "X509_VERIFY_PARAM_set1_ip",
        "X509_VERIFY_PARAM_set1_ip_asc",
        "X509_VERIFY_PARAM_set_hostflags",
    ]


def cryptography_has_x509_v_flag_trusted_first():
    return ["X509_V_FLAG_TRUSTED_FIRST"]


def cryptography_has_x509_v_flag_partial_chain():
    return ["X509_V_FLAG_PARTIAL_CHAIN"]


def cryptography_has_set_cert_cb():
    return ["SSL_CTX_set_cert_cb", "SSL_set_cert_cb"]


def cryptography_has_ssl_st():
    return ["SSL_ST_BEFORE", "SSL_ST_OK", "SSL_ST_INIT", "SSL_ST_RENEGOTIATE"]


def cryptography_has_tls_st():
    return ["TLS_ST_BEFORE", "TLS_ST_OK"]


def cryptography_has_locking_callbacks():
    return [
        "CRYPTO_LOCK",
        "CRYPTO_UNLOCK",
        "CRYPTO_READ",
        "CRYPTO_LOCK_SSL",
        "CRYPTO_lock",
    ]


def cryptography_has_scrypt():
    return ["EVP_PBE_scrypt"]


def cryptography_has_generic_dtls_method():
    return ["DTLS_method", "DTLS_server_method", "DTLS_client_method"]


def cryptography_has_evp_pkey_dhx():
    return ["EVP_PKEY_DHX"]


def cryptography_has_mem_functions():
    return ["Cryptography_CRYPTO_set_mem_functions"]


def cryptography_has_sct():
    return [
        "SCT_get_version",
        "SCT_get_log_entry_type",
        "SCT_get0_log_id",
        "SCT_get_timestamp",
        "SCT_set_source",
        "sk_SCT_num",
        "sk_SCT_value",
        "SCT_LIST_free",
    ]


def cryptography_has_x509_store_ctx_get_issuer():
    return ["X509_STORE_get_get_issuer", "X509_STORE_set_get_issuer"]


def cryptography_has_x25519():
    return ["NID_X25519"]


def cryptography_has_evp_pkey_get_set_tls_encodedpoint():
    return ["EVP_PKEY_get1_tls_encodedpoint", "EVP_PKEY_set1_tls_encodedpoint"]


def cryptography_has_fips():
    return ["FIPS_set_mode", "FIPS_mode"]


CONDITIONAL_NAMES = {
    "Cryptography_HAS_CMS": cryptography_has_cms,
    "Cryptography_HAS_EC2M": cryptography_has_ec2m,
    "Cryptography_HAS_EC_1_0_2": cryptography_has_ec_1_0_2,
    "Cryptography_HAS_SET_ECDH_AUTO": cryptography_has_set_ecdh_auto,
    "Cryptography_HAS_RSA_R_PKCS_DECODING_ERROR": cryptography_has_rsa_r_pkcs_decoding_error,
    "Cryptography_HAS_RSA_OAEP_MD": cryptography_has_rsa_oaep_md,
    "Cryptography_HAS_RSA_OAEP_LABEL": cryptography_has_rsa_oaep_label,
    "Cryptography_HAS_SSL3_METHOD": cryptography_has_ssl3_method,
    "Cryptography_HAS_ALPN": cryptography_has_alpn,
    "Cryptography_HAS_COMPRESSION": cryptography_has_compression,
    "Cryptography_HAS_GET_SERVER_TMP_KEY": cryptography_has_get_server_tmp_key,
    "Cryptography_HAS_102_VERIFICATION_ERROR_CODES": cryptography_has_102_verification_error_codes,
    "Cryptography_HAS_102_VERIFICATION_PARAMS": cryptography_has_102_verification_params,
    "Cryptography_HAS_X509_V_FLAG_TRUSTED_FIRST": cryptography_has_x509_v_flag_trusted_first,
    "Cryptography_HAS_X509_V_FLAG_PARTIAL_CHAIN": cryptography_has_x509_v_flag_partial_chain,
    "Cryptography_HAS_SET_CERT_CB": cryptography_has_set_cert_cb,
    "Cryptography_HAS_SSL_ST": cryptography_has_ssl_st,
    "Cryptography_HAS_TLS_ST": cryptography_has_tls_st,
    "Cryptography_HAS_LOCKING_CALLBACKS": cryptography_has_locking_callbacks,
    "Cryptography_HAS_SCRYPT": cryptography_has_scrypt,
    "Cryptography_HAS_GENERIC_DTLS_METHOD": cryptography_has_generic_dtls_method,
    "Cryptography_HAS_EVP_PKEY_DHX": cryptography_has_evp_pkey_dhx,
    "Cryptography_HAS_MEM_FUNCTIONS": cryptography_has_mem_functions,
    "Cryptography_HAS_SCT": cryptography_has_sct,
    "Cryptography_HAS_X509_STORE_CTX_GET_ISSUER": cryptography_has_x509_store_ctx_get_issuer,
    "Cryptography_HAS_X25519": cryptography_has_x25519,
    "Cryptography_HAS_EVP_PKEY_get_set_tls_encodedpoint": cryptography_has_evp_pkey_get_set_tls_encodedpoint,
    "Cryptography_HAS_FIPS": cryptography_has_fips,
}
